module preprocessor (
    input  wire        clk,
    input  wire        rst_n,
    input  wire        data_ready,
    input  wire [23:0] mic_data [15:0],
    
    // 时域输出（用于简单波束成形）
    output wire [23:0] time_domain_out [15:0],
    output wire        time_domain_vld,
    
    // 频域输出（用于高级算法）
    output wire [31:0] freq_domain_real [15:0][127:0],  // 实部
    output wire [31:0] freq_domain_imag [15:0][127:0],  // 虚部
    output wire        freq_domain_vld,
    
    // 特征输出
    output wire [15:0] energy_levels,  // 各通道能量
    output wire        features_vld
);

// 子模块实例化
time_domain_processing u_time_domain (
    .clk(clk),
    .rst_n(rst_n),
    .data_ready(data_ready),
    .mic_data(mic_data),
    .processed_data(time_domain_out),
    .data_vld(time_domain_vld)
);

frequency_domain_processing u_freq_domain (
    .clk(clk),
    .rst_n(rst_n),
    .data_ready(data_ready),
    .mic_data(mic_data),
    .freq_real(freq_domain_real),
    .freq_imag(freq_domain_imag),
    .freq_vld(freq_domain_vld)
);

feature_extractor u_features (
    .clk(clk),
    .rst_n(rst_n),
    .time_data(time_domain_out),
    .time_vld(time_domain_vld),
    .energy_levels(energy_levels),
    .features_vld(features_vld)
);

endmodule